自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

翻译 The JSR-133 Cookbook for Compiler Writers 中英对照版翻译

由于本人能力有限,如有错误,烦请指出。后面我会将文档放在个人博客上。

2020-09-14 16:11:00 803

原创 synchronized关键字的内存语义及实现

什么是线程安全根据Java并发编程实战2.1 的定义:当多个线程访问某个类时,不管运行是环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。换句话说:线程安全是一个多线程环境下正确性的概念,也就是保证多线程环境下共享的、可修改的状态的正确性,这里的状态反映在程序中其实可以看作是数据。tips:1.在线程安全类中封装了必要的同步机制,因此客户端(使用者)无须进一步采取同步措施。2.无状态对象一定是线.

2020-09-05 17:24:09 545

翻译 JSR-133 FAQ 中英对照版翻译

由于本人能力有限,如有错误,烦请指出。原文地址:https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html我博客上中英对照版地址:https://yellowstar5.cn/direct/jsr-133-faq-chinese.html

2020-09-02 11:06:16 276

翻译 Synchronization 中英文对照翻译

原文地址:https://wiki.openjdk.java.net/display/HotSpot/SynchronizationSynchronization and Object Locking (同步和对象锁定)Java 同步 synchronized 重量级锁 轻量级锁 偏向锁

2020-09-02 10:43:17 630

原创 Java 原子类的使用及原理分析

看完了前面两篇文章,一篇是Unsafe中的CAS,另一篇是volatile,再来学习今天的Java原子类可以说是水到渠成。1.atomic包介绍在java.util.concurrent.atomic包下,主要分为四类:原子更新基本类型:AtomicInteger, AtomicBoolean, AtomicLong 对底层的volatile修饰的基本类型进行CAS操作。原子更新数组:AtomicIntegerArray,AtomicLongArray,AtomicReferenceArra

2020-08-16 22:37:15 887

原创 volatile域的语义及其实现

0.背景-缓存一致性首先需要了解下缓存一致性,可以参看维基百科的词条,也可以看medium上的这篇文章1.JMM提供的volatile域的语义1.1 可见性根据JSR-133 FAQ中的说明,volatile字段是用于在线程之间传递状态的特殊字段。 每次读取volatile时,都会看到任意一个线程对该volatile的最后一次写入。 实际上,程序员将volatile字段指定为不能接受由于缓存或重排序而导致的“过时”值的字段。 禁止编译器和运行时在寄存器中分配它们。 它们还必须确保在写入后将其从高速缓

2020-08-08 21:58:13 333

原创 Unsafe介绍及CAS原理解析

0.Unsafe介绍JavaDoc说, Unsafe提供了一组用于执行底层的,不安全操作的方法。那么具体有哪些方法呢,我画了一张图。可以看到Unsafe中提供了CAS,内存操作,线程调度,本机信息,Class相关方法,查看和设置某个对象或字段,内存分配和释放相关操作,内存地址获取相关方法。我自己抽空对上述方法进行了注释,你可以在这里看到。那么如何使用Unsafe呢?下面我们就来说说如何获取Unsafe并操作。1.获取Unsafe实例如下所述,由于Unsafe.getUnsafe会判断调用类的类

2020-07-26 21:23:59 1097 2

原创 Consul 命令行最全文档

1.启动一个带ACL 控制的Agent首先,从这个网址下载consul,解压后发现就是个可执行文件,如果不可以执行,chmod +x consul 一下。为了试验Consul较多的功能,这里我们打算启用一个dev模式,带ACL控制的Consul代理。配置文件config.json如下{ "datacenter":"dc1", "primary_datacenter":"dc...

2019-06-09 18:37:03 4180

原创 Consul 基本概念,同类比较和内部原理

这个文章我们主要来说一下Consul的基本概念,以及其实现的内部原理,和Eureka的比较。1.什么是Consul?Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。 这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全服务网格。 Consul需要数据平面并支持代理和本机集成模型。 Consul附带一个简单的内置代理,因此一切都可以开箱即用,但也...

2019-06-07 12:08:51 1698

原创 Consul ACL集群配置说明以及ACL Token的用法

在上一篇文章里面,我们讲了如何搭建带有Acl控制的Consul集群。这一篇文章主要讲述一下上一篇文章那一大串配置文件的含义。1.配置说明#1.1 勘误上一篇文章关于机器规划方面,consul client agent的端口写的有误。这里再贴一下正确的机器规划。1.2 我们先来看一下consul server agent的配置。上一节中,提供了三个配置文件,consul-server1...

2019-06-05 23:56:36 7040 7

原创 Consul 集群带ACL控制搭建

Consul Cluster with ACL1.机器规划2.先配置好三个Server,并启动一遍。3.生成并配置agent-token,解决server agent ACL block问题4.启动一个带ui的client agent5.配置环境变量。6.给web-ui 设置master_token7.参考文章这篇文章的目的:搭建带有ACL控制的consul1.5集群。具体概念及配置说明,后面...

2019-06-01 13:47:13 3114 4

原创 学技术没有什么捷径

这篇文章是我 2019 年写的年末小总结,稍加修改, 主要是回顾一下自己的成长历程。当然,如果对其他人有帮助,那就更好了。1.有没有什么捷径? 大二下我是 2016 年 6 月 1 号进冯大(Fenng)的小密圈,算到现在已经 2 年多了。说实话,刚开始进去的时候,老是在想有没有捷径,成功的秘诀之类的。在圈子里呆了一段时间发现,好像大多人都是一步步走,并没有什么奇技淫巧,一步登天。2.学什么呢? 大三下各个公众号,各个新闻,就连校园里,一天到晚都在云计算,大数据,机器学习,人工智能。我要不要去学下

2021-03-09 18:11:46 212

原创 Lombok 使用完全指南

为什么要使用lombok。1.普通的 POJO 需要写或是用IDEA等集成开发环境生成大量gettter, setter方法2.普通的 POJO 对于 equals 和 hashCode 等方法,也需要自己维护。特别你写接口的时候,如果添加了一个字段忘了维护,可能会导致一些bug。3.普通的 POJO 没有 builder 的支持,得自己实现该模式。…总之,lombok 极大地简化你...

2019-08-10 22:46:03 164

翻译 一文搞懂quartz cron trigger

翻译自http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html介绍cron是一个已经存在很长时间的UNIX工具,因此它的调度功能非常强大且经过验证。 CronTrigger类基于cron的调度功能。CronTrigger使用“cron表达式”,它能够创建触发时间表,例如:“每周一...

2019-05-06 14:57:38 223

翻译 Oracle ROWNUM 你所需要知道的一切

本文翻译自 https://blogs.oracle.com/oraclemagazine/on-rownum-and-limiting-results一.Limiting Result SetsROWNUM是Oracle数据库一个神奇的栏目,让很多陷入麻烦。但是,当你学会了它是什么,它如何工作,ROWNUM可能会很有用。我使用它完成两件事:1.执行TOP-N处理。这与其他数据库里的Limi...

2019-01-16 13:34:00 5067

原创 第四章 面向切面的编程

一 定义AOP术语 描述切面的常用术语有通知(advice),切点(pointcut)和连接(join point). 1.1 通知(实际上就是在目标方法执行之前或者之后干点其他事情) 通知用来描述切面完成的工作是什么,并且说明了在什么时候去完成。 Spring切面的五种通知类型 前置通知(Before):在目标方法被调用之前执行调用通知功能 后置通知(After):在目标方法被调...

2018-09-06 16:28:01 217

原创 第三章 高级装配

第一部分 @Profile注解的使用环境与profile 是否启用某个bean,常用于数据库bean 通过profile启用不同的bean,特别是对于各种不同的数据库(开发线,测试线,正式线),尤其管用。 1.1第一步 配置profile bean。通过@Profile修饰类或者方法名,来表明这个Bean是可以动态启动与否的package com.myapp;import org....

2018-09-02 23:31:59 191

原创 第二章 装配Bean

创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质。2.1 Sprig配置的可选方案在xml文件中显式配置(基本上公司中都不用了) 在Java中进行显式配置 隐式的bean发现机制和自动装配 建议:尽可能使用自动配置的机制,显式配置越少越好。 当你必须要显式配置bean的时候(比如源码不是由你来维护的,而你需要这些代码配置bean的时候),...

2018-08-30 09:16:28 259

原创 第一章--Spring之旅

为了降低Java开发的复杂性,Spring采用了以下4种策略:基于pojo的轻量级和最小侵入式编程通过依赖注入和面向接口实现松耦合基于切面和惯例进行声明式编程通过切面和模板减少样本式代码一. 依赖注入(利用面向接口编程的思想,由Spring应用上下文负责依赖注入) 通过依赖注入(DI ,Dependency Inject),对象的依赖关系由系统中负责协调各对象的第三方组...

2018-08-29 23:18:38 214

原创 Joda 日期工具类

由于Java8 之前的Date,SimpleDateFormat都是线程不安全的,所以Joda time就十分受欢迎。即便是Java8新出了一套了线程安全类,我看了一下也差点写的吐了血。。。。 如果你想直接拿去用,请移步到Github下载。 我这里依赖的是joda2.1,用的是junit4做的测试。import org.joda.time.DateTime;import org.joda...

2018-08-10 14:23:59 711

原创 二叉树

1.深度优先遍历深度优先遍历分为前序遍历,中序遍历,后序遍历。1.前序遍历(先访问根节点,再访问左子树,最后访问右子树)1.前序遍历递归解法:1.先判断根节点是否是否为空,为空直接返回 2.如果不为空,先访问根节点的值,再访问左子树,最后访问右子树 public void preOrderedTraverse(Node<T> node){ if(node =

2017-06-10 11:24:42 371

原创 单链表

链表相关的操作,主要包括删除一个节点,增加一个节点,寻找一个节点等。 以下为LeetCode上关于链表的个人解题笔记。1.反转链表/** * 使用一个列表来保存所有节点的值 * 然后使用prev指向前一个节点,cur指向当前节点 * 每次插入一个的时候,将prev与cur连接起来,并更新prev * * @param head * @r

2017-05-28 12:04:44 538

原创 如何在Linux云服务器上搭建Xampp

Xammp 安装Linux云服务器New XAMPP security concept:PHPMyadimin更改php密码

2016-12-03 18:26:27 3710

原创 PHPStorm更改为Apache服务端口,及修改默认的网站目录为PHPStorm的工作目录

PHPStorm更改为Apache服务端口,及修改默认的网站目录为PHPStorm的工作目录

2016-09-24 19:43:05 9528

原创 编程珠玑第十二章--应用之取样问题

原理(P142)1.正确理解所遇到的问题。(与用户讨论,自己的想法) 2.提炼抽象问题。(简洁,明确地陈述问题) 3.考虑尽可能多的解法(想法要灵活,Google搜索,书籍等) 4.实现一种解决方案 5.回顾。Review看是否可以优化问题定义:输入两个正整数参数m,n ,其中m<=n.输出是0~n-1中m个随机的有序列表,不允许重复。其中每个数出现的概率要相等。解法:解法一:利用概率,从剩

2016-09-19 17:32:20 625

原创 编程珠玑第11章--应用之排序

1.插入排序思想:假定x[0…0]是有序的,然后加入x[1],x[2],….,x[n];只要保证每次将待加入x[i]放入正确的位置即可。 方法一:从x[i]开始往前,两两比较,若是前者比后者大,则交换,否则终止 方法二:将x[i]暂存到temp里,两两比较,若是前者比后者大,则用前者覆盖后者,否则跳出循环,然后将temp赋给当前位置 插入排序总结,时间复杂度为O(n^2),如果数组本身就是接近

2016-09-18 21:16:07 558

原创 编程珠玑第10章--性能之节省空间

1.稀疏矩阵问题。 因为从文件更方便以为行为单位来读取,所以与书上的有少许不同 原理:这一行中结束的不为0元素刚好在下一行开始的不为0元素的前面,中间没有其他不为0元素。 这里按照行优先进行保存; 这里count保存迄今为止不为0的矩阵元素的个数 int firstInRow[]记录某一行第一个不为0的元素是第几个元素 int col[], 当前不为0的元素所在的列; int poin

2016-09-12 23:04:46 549

原创 Android WebView中 JS与Java的交互

一般我们会定义一个内部类,方便获取外部类的信息以便传递给JS使用或者是将JS运行得到的值回传给Java代码以便在界面上实现更好的更新或者直接通过Java代码发送给服务器。 由于近期使用到高德地图的H5定位,这里以他为例好了。 1.WebSettings webSettings = webView.getSettings(); // 重要的一句,允许webview执行javaScript

2016-09-12 13:36:03 584

原创 编程珠玑第九章--性能之代码调优

大手术–二分搜索 几个程序的书写package chapter9;public class BinarySort { public static int binarySort0(int x[],int number){ int l=0,r=x.length-1; int m=0; while(true){ if(l>

2016-09-10 14:06:37 703

原创 Windows系统基础上安装Linux

Windows下装Linux双系统的步骤 工具下载分区工具,这里是分区助手, u盘启动盘制作工具,系统ISO镜像 1.分区 用分区助手分出一个新的区,作为接下来装Linux时的空闲盘使用 2.制作启动优盘 打开老毛桃,选择ISO模式,选择已经下载好的ISO镜像,进行U盘制作 3.重启电脑,开启BIOS设置启动方式为U盘启动 4.安装Linux,进入安装页面时断网!!!!

2016-09-04 10:39:18 696

原创 Eclipse 智能提示,改字体大小,更改编码,绑定源码等等

1.智能提示。选Window->Preferences->Java->Editor->Content Assist 然后将Auto activation trigger for Java里的值改为 .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ2.改字体大小。还是进到Preferences里,选中General->Apperance-

2016-09-03 11:43:22 671

原创 编程珠玑第八章-性能之算法设计技术

一.给定一个n元的向量(正负值),如何求最大的连续子向量? 首先贴一下书中伪代码的Java实现及我的理解package chapter8;import javax.xml.crypto.AlgorithmMethod;//给定n个具有浮点数的向量,求出连续子向量值的最大和 //划归为计算arr[i]到arr[j]的和问题public class t0 { //第一个算法就是先用两个循环

2016-08-30 23:42:18 764

原创 编程珠玑第六章

1.假设现在的计算机比Appeal做实验所用的计算机快1000倍,如果使用相同的总时间(大约一天),对于O(n^2)和O(nlogn)算法,问题规模n个增加到多少? (1)使用O(nlogn)二叉树算法时,一天可以处理的问题n的规模10 000个。那么可知10000log10000/ ( x*logx)=1/1000;即4*Math.pow(10,7)*Math.log(10)=( x*logx)

2016-08-29 13:14:24 1492

原创 编程珠玑第四章

1.略 2.我们可以先用原来的二分搜索来寻找这个元素。如果他前一个与其值相等,那就使用前一个的下标;然后再考虑前一个的前一个,以此类推。**package chapter4;import java.util.Arrays;import java.util.Random;//二分搜素public class BinarySearch{ public static int binarySe

2016-08-27 21:25:48 596

原创 编程珠玑第三章习题3.7(5-8)

5.将输入的单词表示成带有后缀连字符的单词package chapter3;public class t5 { public static String matchSuffix(String word,String[] suffixs){ int matchIndex=-1;//存储最后单词word与哪一个后缀匹配,suffixs[matchIndex] b

2016-08-25 21:15:34 1195

原创 编程珠玑第三章3.7习题(1-4)

1.收税问题。 关注收税区间段的起始部分,结束部分,及此区间的税率;因为收税区间段都是每500$一个间隔且税率也随着收税区间的提高每次加上0.01;因而很容易得到下面的循环累加程序。package chapter3;public class t1 { public static float getTax(int income){ float taxRate=0.14f;

2016-08-24 22:23:59 578

原创 编程珠玑第二章2.6(5-10)

**5.题目描述:向量旋转函数将向量ab变为ba(利用(a’b’)’=ba 这里’代表求逆)。如何 将向量abc变为cba(这对交换非相邻内存块的问题进行了建模)? 解决方法,利用(a’b’c’)’=cba [注:’还是代表求逆]。如果想到这里基本上就解决了。 只需对问题B的算法进行更改即可。**#include<iostream>#define Length 9using namesp

2016-08-23 20:58:55 603

原创 编程珠玑第二章习题2.6(1-4)

1.考虑查找给定输入单词的所有变位词问题。我们只需在问题C进行更改存储方式即可 程序如下,用一个 HashMap<String, ArrayList<String>>来保存结果即可,键为标识,值为同位词构成的listimport java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;class WordInfo

2016-08-16 23:45:25 650

原创 编程珠玑第二章问题A,B,C

问题A:给定一个最多包含40亿个随机排列的32位的顺序文件,找到一个不在文件的32位整数。在内存足够的情况下,如何解决该问题?如果有几个外部的临时文件可以用,但是仅有几百个字节可以用,又该如何解决问题 当内存够的情况下,C/C++可以用set集合来做,同样的Java可以用HashSet来做,具体就不说了 下面是不够的源码#include <iostream>using namespace st

2016-08-16 12:48:51 505

原创 编程珠玑第一章第六题

假设用数组array来进行存储数值及其出现的次数 因为int有32个字节,而每个数至多出现10次,又2^3-1<10<2^4-1; 又32/4=8,所有说每个int可以存8个数值及其出现的次数;一.先说set的实现方法,目的是将数值进行存储且每做一次set个数加一(1).下面第一件事就是对每个数值进行分组,由上面可知 0~7用array[0]存储及记录次数;8~15用array[1]存储及记录

2016-08-13 19:50:46 531 2

渥太华CEG4190.rar

Computer Network Design

2021-08-25

consul.zip

完整搭建过程请查看 https://blog.csdn.net/YellowStar5/article/details/90728468

2019-06-01

MNIST_DATA

MNIST_DATA

2017-02-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除