个人总结
文章平均质量分 78
猪杂汤饭
以为“听到就是知道,知道就是掌握”,从而造成一种短时间内智力快速上升、知识量爆棚的幻觉。
展开
-
文件操作小结(C语言版)
1.文件打开——fopen() 原型:FILE * fopen(const char*filename, const char*mode); 功能:打开以filename所指向的字符串为文件名的文件,使之与一个流关联。 返回值:打开成功,返回一个指向FILE类型结构变量,即文件指针,否则返回NULL 所在头文件:stdio.h 实例: FILE *原创 2014-07-18 11:38:40 · 759 阅读 · 0 评论 -
ReentrantLock加锁与解锁源码解析
ReentrantLock公平锁与非公平锁的lock()和unlock()过程解析.ReentrantLock.lock() public void lock() { this.sync.lock(); }sync.lock()取决于ReentrantLock获取锁的机制: 公平性FairSync or 非公平性UnfairSync(Default)非公平性(实现重进入的过程原创 2017-12-26 19:55:33 · 605 阅读 · 0 评论 -
ReentrantReadWriteLock 读写锁获取与释放源码解析
ReentrantReadWriteLock 读写锁构造函数与ReentrantLock相类似, 其自定义同步器Sync分为公平锁FairSync与非公平锁NonfairSync的两种.默认为NonfairSyncpublic ReentrantReadWriteLock() { this(false); }public ReentrantReadWriteLock(bool原创 2017-12-27 11:53:05 · 1149 阅读 · 0 评论 -
Python中使用多个分隔符分隔字符串re.split
正则表达式基础,看这篇就够了摘要split多个分隔符 单一分隔符,使用str.split()即可 多个分隔符,复杂的分隔情况,使用re.split单一分隔符,str.split()与 re.split()效果是一样的 多个单一 分隔符 时 ,”[]”与 “|”的 效果是一样的,但是 请注意 使用 “|”时某些字符 需要转义 多个 长短 不一 的的分隔符的分隔符时, 就应原创 2017-08-19 11:57:02 · 46374 阅读 · 0 评论 -
Thread.join()的真正含义
首先, Thread.join() 并没有将线程合并起来~ 任何疑惑都先从Java Doc开始, stackoverflow上有个极好的例子: 1. After the main thread creates and starts the t1 and t2 threads. There are 3 threads running in parallel: main, t1, t2原创 2017-12-29 18:53:13 · 15828 阅读 · 6 评论 -
ThreadLocal知识点解析
1. 作用(具体作用)为每个线程都维护一个* 线程局部变量* ;(目的)每个线程都可以修改自己内部的变量本,而不影响其他线程的变量。(重要区分:optional)属于线程安全范畴,但是不是为了解决线程同步问题:多个线程对同一个资源的并发访问。2. 每个线程的局部变量是存储在哪里的? 类似问题: ThreadLocal是如何每个线程维护局部变量的?==每...原创 2018-03-03 19:05:58 · 395 阅读 · 0 评论 -
JVM方法调用与方法区
0. 方法区0.1 内容加载的时间节点0.1.1 类信息0.1.2 静态变量0.1.3 常量0.1.4 代码0.1.5 虚方法表0.2 方法区会发生OOM吗?1. 解析调用2. 分派调用2.1 静态分派2.2 动态分派2.3 单分派与多分派Reference0. 方法区0.1 内容加载的时间节点0.1.1 类信息=...原创 2018-03-30 22:23:19 · 941 阅读 · 0 评论 -
ConcurrentHashMap源码解析(jdk1.8)
ConcurrentHashMap 基于JDK1.8ConcurrentHashMap1. 原理解析1.1. 重要成员变量1.2. 实例初始化1.3. put操作1.3.1 put过程描述1.3.2 hash算法1.3.3 定位索引1.3.4 获取table对应的索引元素f1.4. table 扩容1.4.1 addCount1.4.2 treeify...原创 2018-03-27 16:30:07 · 39680 阅读 · 21 评论 -
Java线程池实现原理与源码解析(jdk1.8)
为什么需要线程池? 线程池能够对线程进行统一分配,调优和监控: - 降低资源消耗(线程无限制地创建,然后使用完毕后销毁) - 提高响应速度(无须创建线程) - 提高线程的可管理性Java是如何实现和管理线程池的? 从JDK 5开始,把工作单元与执行机制分离开来,工作单元包括Runnable和Callable,而执行机制有Executor框架提供。 newScheduled...原创 2018-04-03 10:09:49 · 33024 阅读 · 20 评论 -
SpringBoot 2.0 学习计划
SpringBoot 2.0 学习计划学习计划相关链接: https://github.com/YuanKQ/SpringBootTutorial , 学习计划的每一步都有对应的commit. 在查找配置文件相关文档时,务必要保证SpringBoot的版本号要匹配, // 重要版本信息Spring Boot 2.0.3fastJson 1.2.17redis 4.0 ...原创 2018-07-01 20:34:29 · 1441 阅读 · 0 评论 -
傻傻分不清:Spring IoC注入,自动装配与循环依赖
什么是IoCIoC注入方式优缺点比较循环依赖解决办法1.改用setter注入方式(推荐)2. @Lazy注解3. 使用ApplicationContextAware, InitializingBean什么是IoC在创建新的Bean时,IoC容器会自动注入新Bean的所依赖的其他Bean,而无须自己手动创建。 IoC注入方式构造器注入 ...原创 2018-09-04 19:47:42 · 7188 阅读 · 2 评论 -
实践出真知:理解Spring Bean生命周期
实例生命周期Spring Aware接口Spring PostProcessor一些建议实例public class MyBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAware, BeanClassLoaderAware, InitializingBean...原创 2018-09-08 21:16:31 · 2898 阅读 · 2 评论 -
深入浅出解析HashMap源码
转载自:https://huanglei.rocks/coding/194.html (该个人博客十分geek) 基于 OpenJDK1.81 综述1.1 内部类和字段1.1.1 Node1.1.2 TreeNode1.1.3 table:Node[]1.1.4 modCount:int1.2 底层数据结构2 插入2.1 流程综述2.2 hash()...转载 2018-09-05 21:40:25 · 504 阅读 · 1 评论 -
从数据结构(树)深入理解数据库的索引
树二叉树性质: 1. 在非空二叉树中,第iii层的结点总数不超过2i−12i−12^{i-1}, i>=1i>=1i>=1; 2. 深度为hhh的二叉树最多有2h−12h−12^{h}-1个结点(h>=1),最少有h个结点; 3. 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;原创 2018-09-17 12:13:46 · 820 阅读 · 3 评论 -
23种常见设计模式总结(类图,优缺点,不同设计模式之间的对比)
设计模式的几个重要原则单一职责原则开闭原则依赖倒转原则里氏代换原则合成聚合复用原则:尽量使用组合/聚合代替继承迪米特原则:降低耦合性设计模式 类图 优点 缺点...原创 2018-12-29 09:30:12 · 10329 阅读 · 6 评论 -
NXSDOMAIN(域名无法访问)的问题排查思路:深入理解"在浏览器输入网址到显示页面全过程"(一)
问题描述通过域名访问放在腾讯云服务器上的SpringBoot应用出现异常:腾讯云上的部署情况:腾讯云服务器上同时部署了多个应用(网站),通过nginx监听80端口,将域名的请求转发到相应的端口,再由端口对应的程序处理网络请求。问题解决思路首先看到是DNS没有找到这个域名对应的IP address.Tomcat出错找日志www.iasokg.com访问出错的全过程先找域名是否能够正...原创 2019-02-25 19:08:51 · 2744 阅读 · 0 评论 -
网络连接情况的调试思路:从实践中理解ICMP协议
网络连接问题在后台开发中最常见的问题之一。本文总结了定位网络连接问题的思路及常用工具 ping和traceroute(traceroute是Linux命令,在windows中是tracert),并从ICMP网络协议的角度来解释 ping和traceroute的实现原理。假如学有余力的读者,还可以看看扩展部分,一起来转一下牛角尖:“机器通不通”这个描述到底准不准确?原创 2019-04-20 18:32:04 · 100093 阅读 · 0 评论 -
首次将本地代码上传至github
这个问题我遇到好几次了, 每次解决的方式都不一样, 有时解决地十分丑陋, 所有今天必须给自己规范化一下解决流程.前提github账号 本地也已经安装了git场景本地尚且没有代码本地已经有代码了, github上也没有代码, 尚未将代码上传至github本地已有代码, github上也有代码, 两者没有冲突, 需要将本地代码上传至github上本地已有代码, github上也有代码, 两者也原创 2017-09-17 17:19:08 · 9359 阅读 · 2 评论 -
Get pixel width of d3.js SVG element created with width as percentage
问题描述借助d3.js画了一个力引导图(Force-Directed Graph) 官方示例 但是官方示例中将SVG元素的width和height都是设定为像素, 也就是是该SVG不能自适应了.那么为了使SVG能够自适应, 自然而然将svg元素的width和height设置为百分比.<svg width="100%" height="100%"></svg>依然是官方示例, 力引导图却没有出现在网原创 2017-07-07 20:10:46 · 1902 阅读 · 0 评论 -
VS2012通过ODBC与SQLSever2012连接
在做数据库接口实验时,身边的童鞋一路坦途,而自家的电脑太矫情了,一路波折不断。先是微软的SQLSever怎么都装不上,后来下载了一个大家都说装不上的版本,竟然就装上了!!!可是,问题又来了,VS2012通过ODBC怎么也与SQLSever2012连接不上,折腾整整两天,才弄出来。希望可以帮到和我一样可怜的孩子。原创 2015-05-05 19:42:09 · 8522 阅读 · 0 评论 -
create table as select
SQL Sever想要建立table来查询至少选修了课程DB 和OS 的学生的学号。假如是会报错。但是这个语句在MySQL则是正确的。正确是:select sno as sno1 into tab1from sc,coursewhere sc.cno = course.cno and course.cname='操作系统';select sno as sno原创 2015-05-21 18:15:35 · 896 阅读 · 0 评论 -
Machine learning: Trends,perspectives, and prospects读书笔记
M. I. Jordan和T. M. Mitchell在Science上发表了一篇论文Machine learning: Trends,perspectives, and prospects,这篇论文对机器学习的基本概念,发展状况,应用,常见的学习算法做了介绍。对于刚入门来说,构建一个比较基本的机器学习的概念图。在人工智能里,机器学习作为一种解决计算机视觉,语音识别,自然语言处理,机器原创 2015-07-23 00:06:04 · 2689 阅读 · 4 评论 -
HTTP常见的网页错误
竟然被非专业人士问住了我这个计算机专业的人,觉得愧对我这个专业,特地把常见的网页错误备忘,持续更新~HTTP 400 - 请求无效 HTTP 403 - 禁止访问 HTTP 403 - 对 Internet 服务管理器 的访问仅限于 Localhost HTTP 404- 无法找到文件 HTTP 500 - 内部服务器错误原创 2015-10-15 16:13:44 · 547 阅读 · 0 评论 -
笔记本装SSD,win10
目前搜到的网上教程都是在机械硬盘再加装一个SSD,然后再装win7。而肘子是直接把SSD替换原来的HDD,再重装win10。踩过了无数的坑。。。T^T0.环境国行版的envy14j104tx的m.2接口没(yan)有(ge),所以,肘子只能把笔记本的机械硬盘拆掉,在原来的机械硬盘位置装上固态硬盘。 另外,惠普的电脑有很多驱动和软件(肘子觉得即使到要换笔记本也不会用上一回)所以重装系统win10和驱原创 2016-08-28 11:56:25 · 5240 阅读 · 0 评论 -
Win10安装eclipse+SDK+ADT
从干燥的北方来到南方,笔记本竟然也会“水土不服”,主板神奇般地坏了,于是借着新笔记本是win10的机会,装了最新版的eclipse,搭建android开发环境。可是,在GFW的保护下,ADT和SDK的下载也费了我不少功夫,所以特地备忘一下。操作系统:win10 64bit1.下载eclipse-inst-win64.exe先运行该程序,它会提示你应该先装哪一原创 2016-02-16 02:05:52 · 30562 阅读 · 3 评论 -
Linux快速启动应用程序
刚从windows转linux系统,一般都需要通过图形界面过渡一下。随着安装的软件增多,尤其是一些编程用的IDE,比如JB家的软件,每次都要cd xx/xx/xx/bin,然后再运行脚本,所以觉得十分麻烦。所以就想想能不能不要那么麻烦,快速地启动应用程序呢?不会偷懒的程序猿不是好攻城狮。下面是我的解决问题的思路。环境一切不说版本的安装教程都是耍流氓TT 系统:CentOS 7 桌面系统版本原创 2016-11-07 22:37:15 · 17956 阅读 · 1 评论 -
How to Install MongoDB on CentOS7 Gracefully
倒腾MongoDB好几天,强迫症的老人家发现了这些问题:其实安装MongoDB不难,但是有没有发现启动起来很麻烦?关闭看进程号,再kill掉T…T有没有更加gracefully使用MongoDB?能不能让它随着服务器启动而启动?或者是我想让它启动再启动?安装环境还是那句老话,不讲环境的安装教程都是耍流氓~ 安装MongoDB下载官方安装源官方下载地址 选择自己合适的版本 根据自己是Ce原创 2016-11-16 22:44:38 · 604 阅读 · 0 评论 -
数的表示与运算
计算机基础知识总结第一篇,先从最害怕的计算机组成原理开始。 为了防止写过就忘(其实还是会忘记T……T)。计算机中数的表示假设该计算机使用八位表示数,其中一位是符号位,其余7位表示数值。机器数与真值机器数:一个数字在机器中的二进制表示形式,带有符号位 真值:带符号位的机器数对应的真正的数值,机器数不一定就等于真值原码形式: 【符号位】【真值的绝对值】eg. +1 = 0 0000001 -原创 2017-02-05 18:35:41 · 4996 阅读 · 2 评论 -
系统级虚拟机
本文仅是基于“了解基本概念”层面,所以会写的比较简单,想深入了解的同学可以读一下两篇很经典的paper:Disco: running commodity operating systems on scalable multiprocessors和Virtual Machine Monitors 肘子直接吃了其他人站在巨人肩膀上摘下的苹果了。JVM是程序级虚拟机,在这里就不赘述。基本概念虚拟机(Vi原创 2017-02-08 17:08:52 · 887 阅读 · 0 评论 -
MySQL备忘之查询篇
最好的教材当然是官方文档: https://dev.mysql.com/doc/refman/5.7/en/ 作为一枚回回英语考试都垫底的英文盲觉得文档写得还是很通俗易懂,只要你够耐心。distinctDISTINCT关键字应用于所有列而不仅仅是它的前置列。SELECT DISTINCT vend_id,prod_price from product.products# 返回vend_id,原创 2017-03-05 14:11:08 · 510 阅读 · 0 评论 -
IntelliJ编译时,致命错误:在路径和启动路径中找不到包java.lang
基础知识主要是发现自己的Java没有安装成功:……\Java\jdk1.8.0_121\lib里面没有tools.jar,dt.jar而假如正确安装的话,dt.jar和tools.jar位于:{Java_Home}/lib/下,而rt.jar位于:{Java_Home}/jre/lib/下, {Java_Home}对应的本文的是……\Java\jdk1.8.0_121rt.jar是JAVA基础类库原创 2017-03-06 23:08:09 · 9121 阅读 · 0 评论 -
远程访问neo4j
动机采用REST来远程访问neo4j的数据库 同时在本地浏览器查看数据是否添加正确(neo4j的可视化界面x.x.x.x:7474/browser)即,通过HTTP协议来与neo4j进行交互环境配置Linux 版本$ lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch原创 2017-04-06 20:59:28 · 26543 阅读 · 3 评论 -
neo4j 3.0多数库切换
动机类似与关系型数据库,创建了多个数据库想要像访问关系型数据库那样来可以无缝切换多个数据库然而,在neo4j 3.0都暂时没有办法做到:每次启动neo4j,它只能读取一个数据库。 比如,现在有两个数据库graph.db,graph2.db。假设neo4j默认的数据库为graph.db,启动neo4j,这时候想要访问graph2.db,必须修改neo4j的配置文件,将数据库改为graph2.d原创 2017-04-07 17:29:37 · 9900 阅读 · 3 评论 -
MySQL备忘之数据更新篇(INSERT, UPDATE, DELETE)
INSERT插入完整行与NULLnot null字段必须插入值auto_increment字段可以不填入,即使填入NULL值也是不必要的,由DBMS自动计算并填充。如果表的定义允许,则可以在INSERT操作中省略某 些列。省略的列必须满足以下某个条件。 该列定义为允许NULL值(无值或空值)。 在表定义中给出默认值。这表示如果不给出值,将使用默 认值。 如果对表中不允许NULL值且没有默原创 2017-03-06 12:09:00 · 695 阅读 · 0 评论 -
MySQL备忘之表联结(JOIN)
个人觉得写得极好的一篇博客: http://www.cnblogs.com/BeginMan/p/3754322.html本来就是一个左右不分的迷糊虫,刚开始学习表联结时,出现了left join,right join,inner join,balala…… @^@已经懵圈了,知道遇到这幅图,整个世界都清明了。但是,mysql不支持Full join,不过可以通过UNION 关键字来合并 LEFT原创 2017-03-23 21:43:31 · 504 阅读 · 0 评论 -
基于@Aspect的Spring AOP实现竟然没有运行:Spring“最直觉”的调试思路
本文通过一个问题“基于@Aspect的Spring AOP实现竟然没有运行”的调试全过程,给出了Spring最基础最“直觉”最“特别”的调试思路:考虑对象是否被框架加载/实例化了?比较了解Spring AOP的同学可以直接看第二部分“2. 调试思路总结”。阅读本文大概需要10min。原创 2019-04-28 21:31:10 · 1707 阅读 · 0 评论