runtime

Go 典型并发任务

最后都变了- 提交于 2020-03-06 11:58:51
学习-极客时间-Go语言从入门到实战 笔记 单例模式 代码片段举例: package once import ( "fmt" "sync" "testing" "unsafe" ) type Movie struct { } var once sync.Once var SingleInstance *Movie func GetInstance() *Movie { once.Do(func() { fmt.Println("create instance") SingleInstance = new(Movie) }) return SingleInstance } func TestSingleInstance(t *testing.T) { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func() { sing := GetInstance() fmt.Println(unsafe.Pointer(sing)) wg.Done() }() } wg.Wait() } 仅需任意任务完成 代码片段举例: package only import ( "fmt" "runtime" "testing" "time" ) func runTask(id int) string { time.Sleep(10

Registry key Software JavaSoftJava Runtime Environment CurrentVersion

心已入冬 提交于 2020-03-03 20:52:18
前提是在系统环境变量中配置好你需要的jdk 以下是在我安装了不同的jdk版本,切换环境变量后出现的问题。 完成完整的环境变量配置后在DOS中输入java -vserion进行检查是否安装正常,显示:  Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.6' is required. Error: could not find java.dll Error: Could not find Java SE Runtime Environment. 但是在DOS中运行javac却是正常的。  读一下出现的问题提示就会发现,电脑是在提示我Registry key中出现了问题,而这不就是注册表吗。所以我在运行中输入RegEdit,在注册表的HKEY_LOCAL_MACHINE》 SOFTWARE》JavaSoft》Java Runtime Envirnoment中找到了1.7和1.8两个版本的JDK,所以预感到问题可能出现在系统中添加的环境变量的java版本和电脑中默认的版本不一致。 果然双击Java Runtime Envirnoment后,右边出现了四个注册表,双击其中的CurrentVersion,可以看到默认值是1.8,把1

【LeetCode题解】2_两数相加

喜欢而已 提交于 2020-03-03 03:23:08
目录 【LeetCode题解】2_两数相加 描述 方法一:小学数学 思路 Java 代码(非递归写法) Java 代码(递归写法) Python 代码(非递归写法) 【LeetCode题解】2_两数相加 描述 给定两个 非空 链表来表示两个非负整数。位数按照 逆序 方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 方法一:小学数学 思路 按照小学数学中求两数之和的做法,从最低位(链表表头)开始加起,用变量 carry 保存进位的结果(初始值为0),每次求和之后更新变量 carry 的值。 Java 代码(非递归写法) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dummyHead =

设计模式实战——开发中常用到的单例模式

假如想象 提交于 2020-03-02 17:45:32
本系列博客是自己在学习设计模式过程中收集整理的文章集合,其他文章参看 设计模式传送门 单例模式简介 单例模式的目的是保证系统中只有类的一个实例对象,并且提供一个全局的入口点来获取并使用这个实例对象。 使用单例模式可以防止用户“胡乱”创建对象,耗费内存。而且有些对象从逻辑上来讲一个系统中只应该存在一个,比如说 Runtime 类,使用单例模式也能很好的保证这一点。 本文介绍几个我们平时开发过程中常用到的单例模式场景,来加深我们对单例模式的理解。 JDK中的单例模式 Runtime 类封装了Java运行时的环境。每一个java程序实际上都是启动了一个JVM进程,那么每个JVM进程都是对应这一个Runtime实例,此实例是由JVM为其实例化的。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。 由于Java是单进程的,所以,在一个JVM中,Runtime的实例应该只有一个。所以应该使用单例来实现。 public class Runtime { private static Runtime currentRuntime = new Runtime(); public static Runtime getRuntime() { return currentRuntime; } private Runtime() {} } 以上代码为JDK中

ALSA driver--简单的ALSA driver例子

折月煮酒 提交于 2020-03-02 16:28:23
来源:https://github.com/stadaki/alsa-minivosc-src https://www.alsa-project.org/wiki/Minivosc static int debug = 1; /* Use our own dbg macro http://www.n1ywb.com/projects/darts/darts-usb/darts-usb.c*/ #undef dbg #define dbg(format, arg...) do { if (debug) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg); } while (0) #define dbg2(format, arg...) do { if (debug) printk( ": " format "\n" , ## arg); } while (0) // copy from aloop-kernel.c: #include <linux/init.h> #include <linux/module.h> #include <linux/jiffies.h> #include <linux/slab.h> #include <linux/time.h> #include <linux/wait.h> #include

Throwable、Error、Exception、RuntimeException 区别 联系

拟墨画扇 提交于 2020-03-02 14:06:01
1.Throwable 类是 Java 语言中所有错误或异常的超类。它的两个子类是Error和Exception; 2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方法期间,无需在其 throws 子句中声明可能抛出但是未能捕获的 Error 的任何子类,因为这些错误可能是再也不会发生的异常条件。 3.Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。 4.RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的RuntimeException 的任何子类都无需在 throws 子句中进行声明。它是Exception的子类。 5.方法重写时:在子类中一个重写的方法可能只抛出父类中声明过的异常或者异常的子类 Error与Exception有什么区别? Error类和Exception类都继承自Throwable类。 Error的继承关系: java.lang.Object java.lang.Throwable java.lang.Error

iOS性能优化

旧城冷巷雨未停 提交于 2020-03-01 16:16:58
一、App启动优化 1.App的启动可以分为2种 冷启动(Cold Launch):从零开始启动APP 热启动(Warm Launch):APP已经在内存中,在后台存活着,再次点击图标启动APP APP启动时间的优化,主要是针对冷启动进行优化 通过添加环境变量可以打印出APP的启动时间分析(Edit scheme -> Run -> Arguments) DYLD_PRINT_STATISTICS设置为 1 如果需要更详细的信息,那就将DYLD_PRINT_STATISTICS_DETAILS设置为1 2.App 冷启动分为四大阶段 dyld 加载可执行文件,动态库(递归加载) runtime main() 函数执行后 首屏渲染完成后 一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:1012951431, 分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。 2.1关于dyld 在Mac 、iOS中,是使用了/usr/lib/dyld程序来加载动态库 dynamic link editor,动态链接编辑器 dynamic loader,动态加载器 dyld 的源码 https://opensource.apple.com/tarballs/dyld/ initializeMainExecutable 方法开始的

.NET 框架一览

荒凉一梦 提交于 2020-03-01 13:57:05
几乎所有.net框架的功能都是通过调用一系列托管类型来实现的,这些类型被组织为名字空间域namespace并打包成许多程序集assembly. 这个程序集与common language runtime CLR一起组成了.net平台。 有一些.net类型是需要被CLR直接调用的,这些类型所组成的程序集叫做mscorlib.dll。其中既包含C#语言的内置类型,也包括一些基本的集合类型以及用于流处理,序列化,反射,线程的类型。 mscorlib=Multi-language Standard Common Object Runtime Library. 从此再往上一层就是提供诸如XML,网络 和LINQ之类功能的类型,这些类型被定义在system.dll, system.xml.dll和system.core.dll当中。 除此之外.net 框架还包括一些应用API, 这些API基本上用于处理一下三方面的功能: UI用户界面技术 后台技术 分布式系统技术 下表列举了各个C#,CLR以及.net框架版本之间的联系。 C#版本 CLR版本 .NET框架版本 1.0 1.0 1.0 1.2 1.1 1.1 2.0 2.0 2.0,3.0 3.0 2.0(SP1) 3.5 4.0 4.0 4.0 5.0 4.0(给4.0打了补丁) 4.5 来源: https://www.cnblogs

Mac OS X上用CoreCLR运行一个真正的.NET控制台程序

余生长醉 提交于 2020-03-01 01:21:10
这个真正的控制台程序来自 corefxlab ,名叫CoreClrHelloWorld,是一个跨平台的.NET控制台演示程序,可以显示微软、Linux、苹果的logo。 CoreClrHelloWorld代码如下(代码中省略了拼接logo的字符串,完整代码见 这里 ): using System; internal class Program { private static void Main(string[] args) { if (args.Length == 1 && args[0] == "linux") { DrawLinux(); } else if (args.Length == 1 && args[0] == "mac") { DrawMac(); } else { DrawWindows(); } Console.WriteLine(); Console.WriteLine("Press ENTER to exit ..."); Console.ReadLine(); } private static void DrawWindows() { Console.WriteLine("Hello, Windows..."); const int squareSize = 20; var colors = new[] { ConsoleColor.Red,

birt runtime 报表接口(1)

懵懂的女人 提交于 2020-02-29 07:15:58
当启动runtime项目后我们就可以使用url去访问项目了如: http://localhost:8080/birt/ frameset ? __report =blank.rptdesign 如上是一个 frameset 模式,并通过 __report 指定了要展示的报表。 先说birt runtime提供的模式 frameset ―― 采用Ajax框架,可以显示工具条,导航条和TOC面板,实现复杂的操作,如分页处理,导出数据,导出报表,打印等等。该模式下会自动生成report document文件(预览report design文件)到特定的目录(用户可以用参数指定,也可以定义在web.xml里)。采用Ajax,速度较慢。 run ――也采用Ajax框架,但不实现frameset的复杂功能,不会生成临时的report document文件(预览report design文件),也不支持分页,这个主要是应用在BIRT Designer里的preview tab里,可以支持cancel操作,其它不怎么常用。采用Ajax,速度较慢。 preview ――没有用到Ajax框架,直接调用底层Engine API对报表进行render,把生成的报表内容直接输出到浏览器。这种模式和run模式调用的是相同的Engine API,唯一区别在于run采用Ajax获取报表内容