String源码与常用方法 1.栗子 代码: public class JavaStringClass { public static void main(String[] args) { String s ="hello"; s = "world"; //内存地址已经修改 原来地址上的值还是不变的 String s2 = "hello"; //从常量值中找到并引用 String s4 = new String("hello"…
String类下的compareTo(String otherString)方法的源码解析 一. 前言 近日研究了一下String类的一些方法, 通过查看源码, 对一些常用的方法也有了更透彻的认识, 也让我更加理解了设计者的算法思想. 我也推荐大家多读读源码, 我相信大家也会有意想不到的收获. 二. 实战 今天我分析的是String类的compareTo(String otherString)方法, 以下是我个人的分析观点, 如有哪里分析不到位的地方, 欢迎大家指出, 相互学习, 共同进步 !…
更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章. 前言 之前自己本地 clone 了 Flink 的源码,编译过,然后 share 到了 GitHub 上去了,自己也写了一些源码的中文注释,并且 push 到了 GitHub 上去了.这几天阿里开源了宣传已久的 Blink,结果我那个分支不能够继续 pull 下新的代码,再加上自己对 Flink 研究了也有点时间了,所以打算将这两个东西对比着来看,这样可能…
一.前言     众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了解.开卷有益,在我们空闲的时间里面阅读一下spring的源码,对提升我们的自身能力还是还有很大的帮忙.下面总结一下spring源码导入eclipse的具体的操作. 二.spring的特点 spring的的核心就是IOC(控制反转)和AOP(基于切面的编程) 事务管理方面采用了:声明式事务 为各种主流…
1.下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar, 其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免积分):http://download.csdn.net/detail/bakehe/9548373 2.创建J2SEImageGucas实现类,用于实现二维码图像接口QRCodeImage package org.sasc.core.twobarcode; import java.awt.imag…
今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing…
前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为https://github.com/zxing/zxing. 1.加载zxing依赖 用idea新建个maven项目,pom.xml添加对应的依赖 <dependency> <groupId>com.google.zxing<…
1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> &…
public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoderQRCode(String imgPath) { // QRCode 二维码图片的文件 File imageFile = new File(imgPath); BufferedImage bufImg = null; String content = null; try { bufImg = Ima…
通过微信扫小程序码,跳转到应用小程序内, 如何解析小程序码的参数呢? 一般小程序码会跳转到设置的页面,如首页, 可以直接跳转到小程序首页,然后解析小程序携带的参数,再打开某个页面. (小程序码的路径要线上版本存在的路径) 如:商品详情分享码 -> 用户扫码 -> 打开小程序页面(如首页)-> 解析码参数 ->打开商品详情 为啥不直接跳转到商品详情页呢?这当然是可以的,但我们要在首页完成初始化用户信息,所以选首页,加载完首页再跳转,提高首页曝光率,哈. 码携带参数和页面得到链接的参数…
(28) public boolean startsWith(String prefix, int toffset) { char ta[] = value; int to = toffset; char pa[] = prefix.value; int po = 0; int pc = prefix.value.length; // Note: toffset might be near -1>>>1. //如果起始地址小于0或者(起始地址+所比较对象长度)大于自身对象长度,返回假 i…
前言 这篇文章的ArrayList源码是基于jdk1.8版本的源码,如果与前后版本的实现细节出现不一致的地方请自己多加注意.先上一个它的结构图 ArrayList作为一个集合工具,对于我而言它值得我们注意的地方有: 参数的作用细节 扩容的细节 迭代的细节 特殊API的细节 那么我就由这四个细节对ArrayList进行分析. ArrayList的参数细节 ArrayList参数其实并不是特别多,值得我们拿出来讲的那就更少了.下面我通过一张图的展示,同时列出一些值得我们谈一谈的参数: DEFAULT…
HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆. HashMap源码剖析 HashMap的源码如下(加入了比较详细的注释): 1 2…
课程主页 课程介绍:本课程会在给出的源码的基础上要求完成8个lab Lab overviewLab 1 - Lock ServerLab 2 - Basic File ServerLab 3 - MKDIR, UNLINK, and LockingLab 4 - Caching Lock ServerLab 5 - Caching Extent Server + ConsistencyLab 6 - PaxosLab 7 - Replicated lock serverLab 8 - Proje…
准备包括心理和资源两方面. 心理 我看过一句话说,当你用一个框架时,不要忙着看一遍使用教程就开始写项目,先去看看框架原理. 这句话我深以为然.现今前端快速发展,很多前端攻城狮都很茫然:框架更新太快了,各种新技术日新月异,这个还没学会下个就出来了,一直在疲于奔命.这也是我决定学习基础原理的初衷.所有的字都是由横竖撇捺写成,最基础的招式练精了也能成为一霸. 你想象一下,三年以后,当你的其他前端小伙伴在说自己熟练使用这个框架,熟悉那个框架时,你能说,你研究过哪些框架的源码,了解了哪些底层知识,懂前端框…
本篇代码针对2.X版本,与3.X版本细节不尽相同,由于两者架构差别不大加之本人能力有限,所以就使用2.X体验python的底层原理了. 一.主要文件夹内容 Include :该目录下包含了Python提供的所有头文件,如果用户需要自己用C或C++来编写自定义模块扩展Python,那么就需要用到这里提供的头文件. Lib :该目录包含了Python自带的所有标准库,Lib中的库都是用Python语言编写的. Modules :该文件夹中包含了所有用C语言编写的模块,比如ramdom,cString…
1. 功能介绍 特性(Features): 支持 Pinch 手势自由缩放. 支持双击放大/还原. 支持平滑滚动. 在滑动父控件下能够运行良好.(例如:ViewPager) 支持基于 Matrix 变化(放大/缩小/移动)的事件监听. 优势: PhotoView 是 ImageView 的子类,自然的支持所有 ImageView 的源生行为. 任意项目可以非常方便的从 ImageView 升级到 PhotoView,不用做任何额外的修改. 可以非常方便的与 ImageLoader/Picasso…
bootstrap源码之初始化 我们先来分析normalize.less编译后的源码,我们知道normalize.css是一个专门将不同浏览器的默认css特性设置为统一效果的css库,它和reset.css还是有区别的,normalize.css并不是简单的重置了所有的样式,而是有针对的修改,同时也保留了标签的语义化. 技能一: html { font-family: sans-serif; -webkit-text-size-adjust: 100%; //防止IOS系统方向改变(特别是手持设…
jq扩展内容 $.fn.unslider = function(opts) { return this.each(function(index,elem) { var $this = $(elem);//表示的是包裹ul的元素 var unslider = $(elem).data('unslider');//给这个元素存储些数据 if(unslider instanceof $.Unslider) {//当存在这个插件时不往下执行 return; } // Allow usage of .un…
一 概述 String由final修饰,是不可变类,即String对象也是不可变对象.这意味着当修改一个String对象的内容时,JVM不会改变原来的对象,而是生成一个新的String对象 主要考虑以下原因: 为了实现字符串池(提升效率) 只有当字符串是不可变的,字符串池才有可能实现.字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串.但如果字符串是可变的,那么String interning将不能实现,因为这样的话,如果变量改变了它的值,那么其它指向这…
我们今天先来简单了解一下我们持久层框架,mybatis的使用.而且现在的注解成为趋势,我主要说一下注解方向的使用吧(配置文件也会说) 从使用角度只要是三个部分,mybatis-config.xml,mapper.xml,执行文件三个部分. mybatis-config.xml: 主键标签为configuration成对出现的,然后是properties也就是我们的配置,用于配置数据库.settings声明一些配置,比如打印sql语句等,后面会一个个去说.然后就是我们的mappers,里面包含多个…
Android 开源项目源码解析(第二期) 阅读目录 android-Ultra-Pull-To-Refresh 源码解析 DynamicLoadApk 源码解析 NineOldAnimations 源码解析 SlidingMenu 源码解析 Cling 源码解析 BaseAdapterHelper 源码分析 Side Menu.Android 源码解析 DiscreteSeekBar 源码解析 CalendarListView 源码解析 PagerSlidingTabStrip 源码解析 公共…
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.IntentService概述及使用举例 IntentService内部实现机制用到了HandlerThread,如果对HandlerThread不了解的话建议先看上篇文章:Android HandlerThread使用介绍以及源码解析. IntentService是神马玩意?它就是一个Service,但是我们知道在Service中不能进行耗时操作,如果要进行耗时操作的话我们就需要自己new一个子线程在里面进行耗时操作,然而这一切谷歌工程师…
很多人有疑问:为什么要读源码?读源码有什么用?我也一直问自己这些问题,读源码非常枯燥,工作中又用不到,慢慢的自己读源码越发现自己知识的不足,无法把知识串起来,形成知识体系.从单系统中常用的Spring源码.Mybatis.springBoot等到 分布式框技术NIO.Netty.Dubbo.SpringCloud......后续都会一一发布这些源码解析.源码阅读过程也是一个积累知识.厚积薄发的过程. IOC.AOP是spring的2个核心特性.理解这2个特性,有助于更好的解析源码. IOC:控制…
目录 HashSet源码解析 HashSet简单使用的demo HashSet中的变量 HashSet的构造函数 HashSet的add方法 HashSet的iterator方法 HashSet的size方法 HashSet的isEmpty方法 HashSet的remove和clear方法 CopyOnWriteArraySet源码解析 CopyOnWriteArraySet的构造函数 CopyOnWriteArraySet的add方法 CopyOnWriteArraySet的remove方法…
本专栏系列文章已经收录到 GitBooklaravel源码解析 Laravel Passport——OAuth2 API 认证系统源码解析(下)laravel源码解析 Laravel Passport——OAuth2 API 认证系统源码解析(上)laravel源码解析 Laravel Broadcast——广播系统源码剖析laravel源码解析 Laravel Queue——消息队列任务处理器源码剖析laravel源码解析 Laravel Queue——消息队列任务与分发源码剖析laravel…
实例 #!/usr/bin/env python #-*- coding:utf-8 -*- import SocketServer class Myserver(SocketServer.BaseRequestHandler): def handle(self): conn = self.request print self.client_address conn.sendall("我能同时处理多个请求!") flag = True while flag: data = conn.r…
title: RxJava2源码解析(二) categories: 源码解析 tags: 源码解析 rxJava2 前言 本篇主要解析RxJava的线程切换的原理实现 subscribeOn 首先, 我们先看下subscribeOn()方法, 老样子, 先上Demo Observable<Integer> observable = Observable .create(new ObservableOnSubscribe<Integer>() { @Override public v…
系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器,实现引入starter即可开启相关功能的操作,大大简化了程序员手动配置bean,即开即用. 二丶SpringBoot自动装配源码解析 1.源码解析入口 SpringApplication.run(启动类.class, args…
什么是限流? 限流类似于权限机制,它也决定是否接受当前请求,用于控制客户端在某段时间内允许向API发出请求的次数,也就是频率 假设有客户端(比如爬虫程序)短时间发起大量请求,超过了服务器能够处理的能力,将会影响其他用户的正常使用 为了保证服务的稳定性,并防止接口受到恶意用户的攻击,我们可以对接口进行限流 又或者可以对未经身份验证的请求设置访问频率,对经过身份验证的请求不限制访问频率 限流也不止单指限制访问次数的措施,例如付费数据服务的特点访问次数 限流的应用场景 区分用户场景,比如匿名和已登录,…