【编程之美/读书笔记】Chapter 1 游戏之乐

《编程之美》笔记之——24点游戏 原著中给出了两种解法:穷举和分治。后来加上去除冗余括号等操作,自己写了四个实现代码,但完全还是用的原著中的算法思想。暂且把自己的实现过程记录下来。自己的第一种代码实现,完全穷举,没有任何的优化。代码写得极其笨拙。程序穷举了四个数字能组成的所有可能的算式,分别计算它们的值,找到结果是24的那个算式,输出它。一个不带括号的算式总是有形式a op1 b op2 c op3 d,其中a,b,c,d是运 阅读详情

这里就不写每个问题的题目了,只是记录一下自己的总结和心得。

1.1 让CPU占用率听你指挥

这个题目我刚接触的想法是和多核多线程要扯上关系的,因为自己写个死循环只能跑到CPU 35%左右的占用率,但是现在java多线程还没看,所以参考了一下单核的思想,决定过几天好好看看java多线程,再来解决这个问题,下面先总结一下目前的几点收获:

  • 复习了一下 CPU 的频率,时钟周期的概念,举个例子更直观:假设是单核CPU,主频2.20GHZ(拿我现在的电脑为例),那么计算机每秒就 2.2e+9 个时钟周期,现在一般一个时钟周期可以处理大概两条指令,每个空循环是5个指令,那么每秒可以处理的空循环个数就是: 2.20 * 10^9 * 2 / 5
  • 看了篇有关 JAVA 并行编程,线程池的博客,http://www.cnblogs.com/dolphin0520/p/3932921.html,先 mark ,留着看了教材再来翻翻看。
  • Thread.sleep(long waitmillseconds) 可以控制线程停止指定时间,单位是微秒。

1.2 中国象棋将帅问题

这个题目主要难点在于只能用一个字节存储变量,顺便复习了一下存储空间大小之类的。

  • JAVA 中,1bit 是一位,8bit 是一个字节(byte),int是4字节,char是2字节,short是2字节,long是8字节,boolean是1字节,float是4字节,double是8字节。
  • 本题目中涉及很多有关位操作的知识,只是在JAVA中,JAVA虚拟机(JVM)都是将byte类型变成int类型压入栈进行操作的,所以在表面上看好像是节省了空间,实则不然,相反在频繁的类型转换中,耗费了一定的时间,所以本题目对C++更有意义。
《编程之美》——读书笔记 最近花了几天时间把《编程之美》这本书好好读了一遍,感觉收获还是挺大的。 于是决定做个笔记,算是简单的摘录一些书中的精彩思想,也算重新回顾思考下   1.5 快速找出机器故障 问题描述: 有很多的ID(可能位数很大),其中只有一个ID出现的次数小于2,其他正常ID出现的次数都等于2,求这个次数为1的ID 精彩解法: 将所有的数从头到尾异或一遍,这样得出来的最终结果就是所求的答案。 拓 阅读详情

相关推荐

软件工程管理——《人月神话的读书笔记》(chapter2~chapter10)

chapter 2 人月神话 乐观主义 所有的编程人员都是乐观主义者。… “这次她肯定会运行的” “我刚刚找到了最后一个错误” 人月 第二个谬误是在估计和进度安排中使用的工作单位﹣人月。暗示着时间和人员可以相互替换。 在对于任务分解上,看似越多的人会减少个人工作的时间,实则不然,人员的增多会导致其他方面诸如培训和交流之间的开销的增加,导致很快会消耗掉任务分解所节省下来的时间,有时未必会减少

Make My First Step 2082

读书笔记:《编程之美》

《编程之美》读书笔记 我所阅读的《编程之美》是由《编程之美》小组所编写,由电子工业出版社出版,出版时间为2018年11月。此书的由来是有关于微软的面试,后来被用来教授人们一些编程技巧。该书的作者们大多从游戏出发,提出问题,循循善诱,引导读者进行阅读,学习,编程。阅读的过程中不会感到枯燥,而会感到越发有趣,大部分的问题都会在最后配上可以实现的代码来帮助读者学习,简直就是从小白到大神的一条光明大道。 本书其中一个题目就是控制CPU的占用率,这本是来自微软面试的一个问题,作者们尽管自有办法,但仍想从面试者那里看看

Be_Flamingo的博客 1688

RTR4读书笔记 Chapter5 Shading Basics

5.1 阴影模型(Shading Model) Gooch Model,根据顶点法线与灯光方向的接近程度来计算冷暖色调。 该光照模型不考虑光照的强度与颜色,只使用了光照方向。 ±号指Clamp01 r = 2(n * l)*n - l为反射光方向的计算 5.2 光源(Light Sources) ...

weixin_44422550的博客 627

《编程之美》学习笔记——指挥CPU占用率

问题: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率(单核)。有以下几种情况: 1.CPU占用率固定在50%,为一条直线 2.CPU的占用率为一条直线,具体占用率由命令行参数决定(范围1~100) 3.CPU的占用率状态为一条正弦曲线 4.多核处理器情况下上述问题怎么解决 首先确定CPU占有率的定义,即在任务管理器的一个刷新周期内,

Sin_Geek成长の迹 3179

深入理解编程语言与内存管理:Chapter 56读书笔记

本文是针对书籍章节‘Chapter 56’的深入解析。通过探讨编程语言中的各种概念,包括函数签名、内存管理、异常处理以及Objective-C语言的历史和特性,本文旨在帮助读者更好地理解编程语言的内部机制以及如何高效地管理内存。

weixin_28487725的博客 405

camera——HAL层知识分享

CameraHAL层是Android相机系统的核心中间层,负责连接Framework层与硬件驱动层。它通过标准化接口解耦软硬件,实现跨平台兼容性,同时为厂商提供硬件定制空间。主要功能包括:设备管理、数据流处理、参数控制以及图像优化。关键子系统涵盖预览、拍照、录像、对焦与曝光等模块,采用HAL3的"请求-响应"模型实现精细控制。性能优化重点关注启动时间、帧率稳定性和延迟控制。通过分层架构设计(接口层-核心层-适配层)和缓冲池机制,确保高效数据传输和硬件资源调度。

2302_77429403的博客 2079

[读书笔记]编程之美(一)

[读书笔记]编程之美(一)不得不说编程之美是一本很有意思的书,里面的各式各样新奇的问题,总是可以通过课上讲的简单的问题来解决,对于训练自己的思维的确有很大的好处。一般解决复杂的问题,我们总是可以通过:1、画图:链表、二叉树,2、举例,3、分解:分治法、动态规划来解决。游戏 程序也是游戏的一种1.1让CPU占用率曲线听你指挥 题目:用户决定CPU的占有率 思路:(举例)首先我们要明确什么是CPU的占有

xy_cpp的博客 1万+

高精地图语义分割标注

什么是语义分割?语义分割与目标检测的区别?语义分割的关键应用场景有哪些?高精地图语义分割标注的难点?

weixin_52509513的博客 1649

Java并发编程实战读书笔记-Chapter1

上述代码在执行过程中,getNext有时会得到相同的值。value++实际上包含三个独立的操作,读取value,将value加1,将计算结果写入value。运行时可能将多个线程之间的操作交替执行,因此这两个线程可能同时执行读操作,从而使它们得到相同的值,并都将这个值加1。结果就是在不同线程的调用中返回了相同的数值。在多线程程序中,如果一个线程在等待I/O操作完成,另一个线程可以继续运行,使程序能够在I/O阻塞期间继续运行。如果程序是单线程的,那么当程序在等待某个I/O操作完成时,处理器将处于空闲状态。

weixin_42583701的博客 347

FlinkCDC数据同步Bug——同步性能由于写入并行度限制无法提升问题的解决

使用FlinkCDC进行数据同步时,出现增量阶段写入并行度强制为1导致整体同步性能无法提升问题的解决方案

csdn_lan的博客 2080

黑暗中的爆破(船讯网Ais爬虫暨爬虫实战js逆向学习经验分享)

船讯网 爬虫 js逆向 python

returnadsss的博客 1576

《Rust权威指南》读书笔记 - Chapter 1, 2

《Rust权威指南》 读书笔记

Zheng__Huang的博客 688

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2024】_再现性;深度学习

coderVAEVAEVAE) (Kingma威林,2014)在概率性的工作方式学习观测数据之间的映射空间x∈Rmx∈R^mx∈Rm 和潜在的空间z∈Rnmnz∈Rn(m>>n)。作为一个潜变量模型,VAEVAEVAE制定这个问题作为观察样品的最大化对数似logpxlog∫px∣zpzdzpx∣zp (x | z)p(x∣z)可以很容易地使用神经网络建模,和pzp (z)

2401_84181704的博客 1243

《C++并发编程实战(第二版)》读书笔记 chapter 1

挖坑。

YSK111的博客 188

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

PCL 中实现平面模型分割【2026最新版】

RANSAC分割平面。博客长期更新,最近一次更新时间为:2026年5月4日。

点云侠的博客 38万+

《windows核心编程》读书笔记1-chapter1

《windows核心编程》读书笔记1-chapter1 //WinErrCodeformater.h/************************************************************************//*CWinErrCodeFormatter,用于将错误码翻译成文本,可以指定文本的语言     *//*这是一个functor/***

神经网络爱好者 657

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++: Essential C++ 读书笔记(chapter2):面向过程编程:提供重载函数

C++: Essential C++ 读书笔记:面向过程编程:提供重载函数

C++ JAVA的专栏 248

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java并发编程实战读书笔记-Chapter5-1

第4章介绍了构造线程安全类时采用的一些技术,例如将线程安全性委托给现有的线程安全类。委托是创建线程安全类的一个最有效的策略:只需让现有的线程安全类管理所有的状态即可。Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类(Synchronizer)。本章将介绍其中一些最有用的并发构建模块,以及在使用这些模块来构造并发应用程序时的一些常用模式。

weixin_42583701的博客 144

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java并发编程实战读书笔记-Chapter3

更糟糕的是,失效值可能不会同时出现:一个线程可能获得某个变量的最新值,而获得另一个变量的失效值。与其他问题相比,失效值问题更容易出现:如果某个线程线程调用了set,那么另一个正在调用get的线程可能会看到更新后的value值,也可能看不到。NoVisibility 可能会持续循环下去,因为线程可能永远看不到read的值,一种更奇怪的现象是,NoVisibility可能会输出0,因为读线程可能看到了写入ready的值,但却没有看到之后写入number的值,这种现象被称为。示例3:线程安全的可变整数类。

weixin_42583701的博客 106

C++: Essential C++ 读书笔记(chapter2):面向过程编程:使用模板函数

C++: Essential C++ 读书笔记:面向过程编程:使用模板函数

C++ JAVA的专栏 238

[读书笔记]Core Java: Volume I - Fundamentals Chapter 1

Title: Core Java — Volume I Fundamentals Edition: Eleventh Edition Author: Cay S. Horstmann 文章目录PrefaceTo the ReaderA Tour of This BookConventionChapter 1: An Introduction to Java1.1 Java as a Progr...

出海的博客 779

Java并发编程实战读书笔记-Chapter2

当多个线程访问某个类时,这个类始终都能表现出正确的行为(某个类的行为与其规范完全一致),那么就称这个类是线程安全的。示例:无状态的Servlet(这个Servlet从请求中提取数值,执行因数分解,然后将结果封装到该Servlet的响应中)} }StatelessFactorizer 是无状态的,计算过程中的临时状态仅存在于线程栈上的局部变量中,并且只能由正在执行的线程访问。

weixin_42583701的博客 119

【读书笔记】《Effective Modern C++》Chapter 1: Deducing Types

C++11/14 引入了强大的自动类型推导机制,让我们可以借助模板参数推导、autodecltype等关键字以更少的代码表达更丰富的泛型逻辑。但这些便利背后有着诸多细节:不同场景下推导规则各异、数组和函数会“退化”、以及如何准确地查看编译器真正推导的类型。理解这些规则,既能让代码更简洁,也能避免性能陷阱和难以察觉的 bug。

YZJincsdn的博客 1079

Java并发编程实战读书笔记-Chapter4

到目前为止,我们已经介绍了关于线程安全与同步的一些基础知识。然而,我们并不希望对每一次内存访问都进行分析以确保程序说线程安全的,而是希望将一些现有的线程安全组件组合成为更大规模的组件或程序。本章将介绍一些组合模式,这些模式能够使一个类更容易成为线程安全的,并且在维护这些类时不会无意中破坏类的安全性保证。

weixin_42583701的博客 301
上一篇: 【JAVA/读书随笔】Chapter 26 二叉查找树(BST)
下一篇: 【刷题笔记/剑指Offer】Part 1 (1-10)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值